package bszt.xiecheng;

import java.util.Scanner;

public class Code01 {

    /**
     * 问题描述
     * LYA小姐最近迷上了国际象棋，但普通的国际象棋棋盘她已经玩腻了。
     * 为了增加趣味性，她想设计一种由c_1和c_2两种字符组成的n行m列的字符矩阵作为棋盘，并且希望相邻的字符都不相同（定义上下、左右都是相邻的）。
     * 你能帮帮LYA小姐设计这样一个棋盘吗？
     */

    static String[][] res;

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int m = sc.nextInt();
        String c1 = sc.next();
        String c2 = sc.next();
        if (n == 1 && m == 1) System.out.println(c1);
        res = new String[n][m];
        res[0][0] = c1;
        if (n == 1) dfs(0, 1, c1, c2);
        if (m == 1) dfs(1, 0, c1, c2);
        dfs(0, 1, c1, c2);
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < m; j++) {
                System.out.print(res[i][j]);
            }
            System.out.println();
        }
    }

    public static void dfs(int x, int y, String c1, String c2) {
        if (x < 0 || y < 0 || x >= res.length || y >= res[0].length || res[x][y] != null) return;
        String flag = "";
        if (x + 1 < res.length && res[x + 1][y] != null) {
            flag = res[x + 1][y];
        } else if (x - 1 >= 0 && res[x - 1][y] != null) {
            flag = res[x - 1][y];
        } else if (y + 1 < res[0].length && res[x][y + 1] != null) {
            flag = res[x][y + 1];
        } else if (y - 1 >= 0 && res[x][y - 1] != null) {
            flag = res[x][y - 1];
        }
        if (flag.equals(c1)) {
            res[x][y] = c2;
        } else {
            res[x][y] = c1;
        }
        dfs(x + 1, y, c1, c2);
        dfs(x - 1, y, c1, c2);
        dfs(x, y + 1, c1, c2);
        dfs(x, y - 1, c1, c2);
    }
}
